home *** CD-ROM | disk | FTP | other *** search
/ Multimedia Jumpstart / Multimedia Microsoft Jumpstart Version 1.1a (Microsoft).BIN / develpmt / source / vbsprsrc / sprdemo.frm (.txt) < prev    next >
Encoding:
Visual Basic Form  |  1994-02-15  |  7.4 KB  |  203 lines

  1. VERSION 2.00
  2. Begin Form Form1 
  3.    Caption         =   "Form1"
  4.    ClientHeight    =   3672
  5.    ClientLeft      =   876
  6.    ClientTop       =   1524
  7.    ClientWidth     =   6084
  8.    Height          =   4092
  9.    Left            =   828
  10.    LinkTopic       =   "Form1"
  11.    ScaleHeight     =   306
  12.    ScaleMode       =   3  'Pixel
  13.    ScaleWidth      =   507
  14.    Top             =   1152
  15.    Width           =   6180
  16.    Begin Timer Timer1 
  17.       Interval        =   1
  18.       Left            =   360
  19.       Top             =   240
  20.    End
  21. Option Explicit
  22. ' interface to sprite DLL
  23. const UPDATE_SCREEN = 1
  24. const NO_UPDATE = 0
  25. Declare Function CreateSpriteWindow Lib "VBSPRITE.DLL" (ByVal hWnd As Integer) As Long
  26. Declare Sub DeleteSpriteWindow Lib "VBSPRITE.DLL" (ByVal pSpriteWnd As Long)
  27. Declare Function LoadDIB Lib "VBSPRITE.DLL" (ByVal filename As String) As Long
  28. Declare Sub DeleteDIB Lib "VBSPRITE.DLL" (ByVal pDIB As Long)
  29. Declare Sub SetBackground Lib "VBSPRITE.DLL" (ByVal pSpriteWnd As Long, ByVal pDIB As Long, ByVal bUpdate As Integer)
  30. Declare Function CreateSprite Lib "VBSPRITE.DLL" (ByVal pSpriteWnd As Long, ByVal pSprDib As Long, ByVal initx As Integer, ByVal inity As Integer, ByVal initz As Integer, ByVal bRedraw As Integer) As Long
  31. Declare Sub DeleteSprite Lib "VBSPRITE.DLL" (ByVal pSpriteWnd As Long, ByVal pSprite As Long)
  32. Declare Function SpriteHitTest Lib "VBSPRITE.DLL" (ByVal pSpriteWnd As Long, ByVal x As Integer, ByVal y As Integer) As Long
  33. Declare Sub SetSpritePosition Lib "VBSPRITE.DLL" (ByVal pSpriteWnd As Long, ByVal pSprite As Long, ByVal x As Integer, ByVal y As Integer, ByVal bUpdate As Integer)
  34. Declare Sub SetSpriteZOrder Lib "VBSPRITE.DLL" (ByVal pSpriteWnd As Long, ByVal pSprite As Long, ByVal z As Integer, ByVal bUpdate As Integer)
  35. Declare Sub SetSpriteDIB Lib "VBSPRITE.DLL" (ByVal pSpriteWnd As Long, ByVal pSprite As Long, ByVal pSprDib As Long, ByVal bUpdate As Integer)
  36. Declare Function GetDIBWidth Lib "VBSPRITE.DLL" (ByVal pDIB As Long) As Long
  37. Declare Function GetDIBHeight Lib "VBSPRITE.DLL" (ByVal pDIB As Long) As Long
  38. Declare Sub RepaintSpriteWindow Lib "VBSPRITE.DLL" (ByVal pSpriteWnd As Long)
  39. Declare Sub SetSpriteVisible Lib "VBSPRITE.DLL" (ByVal pSpriteWnd As Long, ByVal pSprite As Long, ByVal bVisible As Integer, ByVal bUpdate As Integer)
  40.     ' pointers to sprites 'n' stuff
  41.     Dim pSpriteWnd As Long
  42.     Dim pBkDib As Long
  43.     Dim pNellDib As Long
  44.     Dim pOliviaDib As Long
  45.     Dim pSunDib As Long
  46.     Dim pMoonDib As Long
  47.     Dim pDuckDib1 As Long
  48.     Dim pDuckDib2 As Long
  49.     Dim pDuckDib3 As Long
  50.     Dim pDuckDib4 As Long
  51.     Dim pSprite1 As Long
  52.     Dim pSprite2 As Long
  53.     Dim pSprite3 As Long
  54.     Dim pCurrentSprite As Long
  55. Dim bMouseDown As Integer
  56. Dim bSpriteImage As Integer
  57. Dim nDuckImage As Integer
  58. Dim lTime As Long
  59. Dim maxx As Integer' size of background
  60. Dim maxy As Integer
  61. Dim sp1x As Integer' sprite 1 (sun/moon) vars
  62. Dim sp1y As Integer
  63. Dim sp1vx As Integer
  64. Dim sp1vy As Integer
  65. Dim sp1ay As Integer
  66. Dim sp1w As Integer
  67. Dim sp1h As Integer
  68. Dim sp2x As Integer' sprite 2 (ducks) vars
  69. Dim sp2y As Integer
  70. Dim sp2vx As Integer
  71. Dim sp2vy As Integer
  72. Dim sp2ay As Integer
  73. Dim sp2w As Integer
  74. Dim sp2h As Integer
  75. Dim sp3x As Integer ' sprite 3 (nell) vars
  76. Dim sp3y As Integer
  77. Dim MouseDiffX As Integer ' for dragging sprites
  78. Dim MouseDiffY As Integer
  79. Sub Form_Load ()
  80.     form1.Visible = True
  81.     pSpriteWnd = CreateSpriteWindow(form1.hWnd)
  82.     pBkDib = LoadDIB("bkgnd.dib")
  83.     SetBackground pSpriteWnd, pBkDib, UPDATE_SCREEN
  84.     pNellDib = LoadDIB("nell.dib")
  85.     pOliviaDib = LoadDIB("olivia.dib")
  86.     pSunDib = LoadDIB("sun.dib")
  87.     pMoonDib = LoadDIB("moon.dib")
  88.     pDuckDib1 = LoadDIB("duck1.dib")
  89.     pDuckDib2 = LoadDIB("duck2.dib")
  90.     pDuckDib3 = LoadDIB("duck3.dib")
  91.     pDuckDib4 = LoadDIB("duck4.dib")
  92.     pSprite1 = CreateSprite(pSpriteWnd, pSunDib, 20, 20, 50, UPDATE_SCREEN)
  93.     pSprite2 = CreateSprite(pSpriteWnd, pDuckDib1, 20, 20, 20, UPDATE_SCREEN)
  94.     pSprite3 = CreateSprite(pSpriteWnd, pNellDib, 20, 20, 30, UPDATE_SCREEN)
  95.     maxx = GetDIBWidth(pBkDib)
  96.     maxy = GetDIBHeight(pBkDib)
  97.     sp1x = 20 ' initialize sun/moon
  98.     sp1y = 20
  99.     sp1vx = 5
  100.     sp1vy = 25
  101.     sp1ay = 1
  102.     sp2x = 20 ' initialize duck
  103.     sp2y = 20
  104.     sp2vx = 40
  105.     sp2vy = 0
  106.     sp2ay = 0
  107.     sp2w = GetDIBWidth(pDuckDib1)
  108.     sp3x = 20
  109.     sp3y = 20
  110. End Sub
  111. Sub Form_MouseDown (Button As Integer, Shift As Integer, x As Single, y As Single)
  112. bMouseDown = 1
  113. pCurrentSprite = SpriteHitTest(pSpriteWnd, x, y)
  114. If (pCurrentSprite = pSprite3) Then
  115.     MouseDiffX = x - sp3x
  116.     MouseDiffY = y - sp3y
  117. End If
  118. If (pCurrentSprite = pSprite2) Then
  119.     sp2vx = 0
  120.     sp2vy = 0
  121.     sp2ay = 3
  122. End If
  123. If (pCurrentSprite = pSprite1) Then
  124.     sp1vy = sp1vy - 20
  125. End If
  126. End Sub
  127. Sub Form_MouseMove (Button As Integer, Shift As Integer, x As Single, y As Single)
  128.     If (bMouseDown And pCurrentSprite = pSprite3) Then
  129.         SetSpritePosition pSpriteWnd, pSprite3, x - MouseDiffX, y - MouseDiffY, UPDATE_SCREEN
  130.     End If
  131. End Sub
  132. Sub Form_MouseUp (Button As Integer, Shift As Integer, x As Single, y As Single)
  133. bMouseDown = 0
  134. If (pCurrentSprite = pSprite3) Then
  135.     sp3x = x - MouseDiffX
  136.     sp3y = y - MouseDiffY
  137. End If
  138. End Sub
  139. Sub Form_Paint ()
  140.     If (pSpriteWnd) Then RepaintSpriteWindow pSpriteWnd
  141. End Sub
  142. Sub Form_Unload (Cancel As Integer)
  143.     DeleteSprite pSpriteWnd, pSprite1
  144.     DeleteSprite pSpriteWnd, pSprite2
  145.     DeleteSprite pSpriteWnd, pSprite3
  146.     DeleteSpriteWindow pSpriteWnd
  147.     pSpriteWnd = 0 ' stop repaints!
  148.     DeleteDIB pOliviaDib
  149.     DeleteDIB pNellDib
  150.     DeleteDIB pSunDib
  151.     DeleteDIB pMoonDib
  152.     DeleteDIB pBkDib
  153. End Sub
  154. Sub Timer1_Timer ()
  155. lTime = lTime + 1
  156. nDuckImage = nDuckImage + 1
  157. ' rotate duck image, but wait until the duck is moved before it's redrawn
  158. If (nDuckImage > 3) Then nDuckImage = 0
  159. Select Case nDuckImage
  160.     Case 0
  161.         SetSpriteDIB pSpriteWnd, pSprite2, pDuckDib1, NO_UPDATE
  162.     Case 1
  163.         SetSpriteDIB pSpriteWnd, pSprite2, pDuckDib2, NO_UPDATE
  164.     Case 2
  165.         SetSpriteDIB pSpriteWnd, pSprite2, pDuckDib3, NO_UPDATE
  166.     Case 3
  167.         SetSpriteDIB pSpriteWnd, pSprite2, pDuckDib4, NO_UPDATE
  168. End Select
  169. ' move sun/moon
  170. sp1x = sp1x + sp1vx
  171. sp1y = sp1y + sp1vy
  172. sp1vy = sp1vy + sp1ay
  173. If sp1x < 0 And sp1vx < 0 Then sp1vx = -sp1vx
  174. If sp1y < 0 And sp1vy < 0 Then sp1vy = -sp1vy
  175. If sp1x + sp1w > maxx And sp1vx > 0 Then sp1vx = -sp1vx
  176. If sp1y + sp1h > maxy And sp1vy > 0 Then sp1vy = -sp1vy * .9
  177. SetSpritePosition pSpriteWnd, pSprite1, sp1x, sp1y, UPDATE_SCREEN
  178. 'move duck
  179. sp2x = sp2x + sp2vx
  180. sp2y = sp2y + sp2vy
  181. sp2vy = sp2vy + sp2ay
  182. If sp2x < 0 And sp2vx < 0 Then sp2vx = -sp2vx
  183. If sp2y < 0 And sp2vy < 0 Then sp2vy = -sp2vy
  184. If sp2x + sp2w > maxx And sp2vx > 0 Then sp2vx = -sp2vx
  185. If sp2y + sp2h > maxy And sp2vy > 0 Then sp2vy = -sp2vy * .7
  186. SetSpritePosition pSpriteWnd, pSprite2, sp2x, sp2y, UPDATE_SCREEN
  187. ' periodically change sun into moon.
  188. If (lTime > 25) Then
  189.     If (bSpriteImage) Then
  190.         SetSpriteDIB pSpriteWnd, pSprite1, pSunDib, UPDATE_SCREEN
  191.         sp1w = GetDIBWidth(pSunDib) ' get new size so we bounce properly
  192.         sp1h = GetDIBHeight(pSunDib)
  193.         bSpriteImage = False
  194.     Else
  195.         SetSpriteDIB pSpriteWnd, pSprite1, pMoonDib, UPDATE_SCREEN
  196.         sp1w = GetDIBWidth(pMoonDib)
  197.         sp1h = GetDIBHeight(pMoonDib)
  198.         bSpriteImage = True
  199.     End If
  200.     lTime = 0
  201. End If
  202. End Sub
  203.